import {createRouter,createWebHashHistory,createWebHistory} from 'vue-router'
import axios from 'axios'
import FormVue from '../pages/Form.vue'
import ListVue from '../pages/List.vue'
import ParentVue from '../pages/Parent.vue'
const routerHistory=createWebHashHistory()
const router=createRouter({
  history:routerHistory,
  routes:[
    {
      path:'/',
      meta:{
        id:0,
        title:"首页",
        showInLeft:true
      },
      component:()=>import('../pages/test.vue')
    },
    {
      path:"/addlist",
      meta:{
        id:-2,
        title:"添加列表",
        showInLeft:true
      },
      component:()=>import("../pages/addList.vue")
    },
    {
      path:"/addform",
      meta:{
        id:-1,
        title:"添加表单",
        showInLeft:true
      },
      component:()=>import("../pages/addForm.vue")
    },
    {
      path:"/editcomp",
      meta:{
        id:-3,
        title:"测试编辑element组件",
        showInLeft:true
      },
      component:()=>import("../pages/editComp.vue")
    },
    {
      path:"/apieditor",
      meta:{
        id:-4,
        title:"api地址编辑器",
        showInLeft:true
      },
      component:()=>import("../components/apiEditor.vue")
    }
    // {
    //   path:'/page2', //测试一个页面里，点击按钮弹出另一个路由对应的页面
    //   children:[
    //     {
    //       path:"dialog",
    //       meta:{
    //         id:-10,
    //         title:"弹窗测试",
    //         showInLeft:false
    //       },
    //       component:()=>import('../pages/page2dialog.vue')
    //     },
    //     {
    //       path:"dialog2",
    //       meta:{
    //         id:-11,
    //         title:"弹窗测试2",
    //         showInLeft:false
    //       },
    //       component:()=>import('../pages/page2dialog2.vue')
    //     }
    //   ],
    //   meta:{
    //     id:-1,
    //     title:"第二页",
    //     showInLeft:true
    //   },
    //   component:()=>import('../pages/page2.vue')
    // },
    // {
    //   path:'/formpage',
    //   meta:{
    //     id:-2,
    //     title:"表单",
    //     showInLeft:true
    //   },
    //   component:FormVue
    // }
  ]
})

let allowComponents={
  "List":ListVue,
  "Form":FormVue
}

function setChild(p,all){
  all.filter(x=>x.pid==p.meta.id).forEach(item=>{
    var r={
      path:item.path,
      meta:{
        id:item.id,
        pid:item.pid,
        title:item.title,
        order:item.order,
        type:item.type,
        showInLeft:item.showInLeft,
        cfgId:item.cfgId
      },
      children:[],
      component:allowComponents[item.type]
    }
    setChild(r,all)
    p.children.push(r)
  })
}

await axios.get("http://localhost:7788/routes").then(rep=>{
  let d=rep.data.data
  d.filter(x=>x.pid==0).forEach(item => {    
    var r={
      path:item.path,
      meta:{
        id:item.id,
        pid:item.pid,
        title:item.title,
        order:item.order,
        type:item.type,
        showInLeft:item.showInLeft,
        cfgId:item.cfgId
      },
      children:[],
      component:allowComponents[item.type]
    }
    setChild(r,d)
    if(r.children.length>0){
      r.component=ParentVue //父路由也必须设置一个component
    }
    router.addRoute(r)    
  });
})

export default router